package indi.yangshenhui.tool;

import java.lang.reflect.Array;

public class ArrayUtil {

	private ArrayUtil() {
	}

	public static boolean isEmpty(Object[] objects) {
		if (objects == null) {
			return true;
		} else if (objects.length == 0) {
			return true;
		}
		return false;
	}

	public static boolean isNotEmpty(Object[] objects) {
		return !isEmpty(objects);
	}

	/**
	 * 将新元素添加到已有数组中 添加新元素会生成一个新的数组,不影响原数组
	 * 
	 * @param buffer
	 *            已有数组
	 * @param newElement
	 *            新元素
	 * @return 新数组
	 */
	public static <T> T[] append(T[] buffer, T newElement) {
		T[] t = resize(buffer, buffer.length + 1);
		t[buffer.length] = newElement;
		return t;
	}

	/**
	 * 生成一个新的重新设置大小的数组
	 * 
	 * @param buffer
	 *            原数组
	 * @param newSize
	 *            新的数组大小
	 * @param componentType
	 *            数组元素类型
	 * @return 调整后的新数组
	 */
	public static <T> T[] resize(T[] buffer, int newSize) {
		@SuppressWarnings("unchecked")
		T[] newArray = (T[]) Array.newInstance(buffer.getClass()
				.getComponentType(), newSize);
		System.arraycopy(buffer, 0, newArray, 0,
				buffer.length >= newSize ? newSize : buffer.length);
		return newArray;
	}

}